Rust 泛型
阐述
泛型是对一系列具有共同特点的类型的总结,可以使用在枚举、结构体和函数等场景。
被抽 象出来的类型称为类型参数,可以为类型参数添加 Rust 特征的限制。
除了抽象出来类型之外,对于数组等情况也可以抽象出来值作为参数,此时称为 const 泛型。
实例
泛型函数
fn add<T: std::ops::Add<Output = T>>(a:T, b:T) -> T {
a + b
}
泛型结构体
struct Point<T> {
x: T,
y: T,
}
fn main() {
let integer = Point { x: 5, y: 10 };
let float = Point { x: 1.0, y: 4.0 };
}
泛型枚举
enum Option<T> {
Some(T),
None,
}
泛型方法
可以为所有类型实现方法,也可以为一个类型实现方法:
impl Point<f32> {
fn distance_from_origin(&self) -> f32 {
(self.x.powi(2) + self.y.powi(2)).sqrt()
}
}
const 泛型
fn display_array<T: std::fmt::Debug, const N: usize>(arr: [T; N]) {
println!("{:?}", arr);
}
fn main() {
let arr: [i32; 3] = [1, 2, 3];
display_array(arr);
let arr: [i32; 2] = [1, 2];
display_array(arr);
}